/**
 * S = H / E 量化
 * @param {Number} start      起始年份
 * @param {Number} end       终止年份
 * @param {Number} r         现值系数
 * @param {Number} reference 基准年份
 * @param {Number} damage    损害数量
 * @param {Number} tStart    补偿性恢复行动单位效益-起始年
 * @param {Number} tRef      补偿性恢复行动单位效益基准年
 * @param {Number} tTime     贴现时间
 * @param {Number} tr        贴现系数
 * @param {Array} list       列表
 * @returns {Object}         S补偿性恢复行动规模，H损害量，E恢复行行动单位效益
 */
export const quantization = (param) => {
  const dic = {}
  param.list.forEach((element) => {
    dic[element.name] = element.value
  })

  const N_Q = param.start //起始年份
  const N_Z = param.end // 终止年份
  const N_J = param.reference // 基准年份
  const N_T = param.damage // 损害数量
  const N_R = param.r // 现值系数

  let H: number = 0
  let index: number = 0
  for (let i = N_Q; i <= N_Z; i++) {
    const rt = N_T
    const dt = Number(dic[i + ''])
    const rtdt = rt * dt
    const r = Number(N_R)
    const r1 = 1 + r
    const tt = N_J - i
    const mtt = Math.pow(r1, tt)
    const h: number = rtdt * mtt
    H += h
    index++
  }

  const n_z = N_Z
  const t_q = param.tStart // 补偿性恢复行动恢复起始年
  const t_j = param.tRef // 基准年
  const t_r = param.tr // 贴现系数
  const t_t = param.tTime // 贴现时间

  let E = 0
  let ke = 0
  const dd = 1 / (n_z - t_q + 1)
  for (let i: number = t_j; i < t_q + Number(t_t); i++) {
    let xs = 0
    if (i > n_z) {
      xs = 1
    } else if (i < t_q) {
      xs = 0
    } else {
      ke += dd
      xs = ke
    }

    const ee = xs * Math.pow(1 + Number(t_r), t_j - i)
    E += ee
  }

  //补偿性恢复规模的确定
  const S = H / E
  return {
    S,
    H,
    E
  }

  // results.push({
  //   name: '        本项目的期间损害总计为： ',
  //   value: H.toFixed(4) + ' 平方米*贴现年'
  // })
  // results.push({
  //   name: '        补偿性恢复行动的单位效益为： ',
  //   value: E.toFixed(4) + '  贴现年'
  // })
  // results.push({
  //   name: '补偿性恢复规模(S)： ',
  //   value: '        S = H / E '
  // })
  // results.push({
  //   name: '        本项目需要补偿性恢复的植被面积为： ',
  //   value: S.toFixed(4) + '  平方米'
  // })
}
